package q814_pruneTree;

import CommonClass.Common.TreeNode;

public class Solution {
    /*
    后序遍历递归的典型
    要消除所有没有含有1的节点的子树
    实际上就是一直递归到叶子节点 如果叶子节点是0 则该递归将会直接返回null
    那么这就使得原本连接该叶子节点的节点 可能 变为叶子节点
    例如有一个0节点连接着两个叶子节点0 那么递归后 两个叶子节点变为null 此时这个0节点又变为了上一层递归的叶子节点
    并且将会在递归中被消除
     */
    public TreeNode pruneTree(TreeNode root) {
        if (root == null) return null;

        root.left = pruneTree(root.left);
        root.right = pruneTree(root.right);

        if (root.left == null && root.right == null && root.val == 0) return null;

        return root;
    }
}
